package com.situ.day2;

import org.junit.Test;
import java.util.ArrayList;
import java.util.Scanner;

public class ArrayDemo {
    @Test
    public void test1() {
        //数组：存放同一种类型数据的集合，在内存里面是开辟一块连续的区域。
        int[] array = new int[4];
        array[0] = 23;
        array[1] = 3;
        array[2] = 4;
        array[3] = 24;

        System.out.println(array[2]);
        System.out.println(array.length);//4
        System.out.println("------------");
        for (int i = 0; i < array.length; i++) {
            //System.out.println(i);
            System.out.println(array[i]);
        }
        System.out.println("-----------");
        for (int i = array.length -1; i >= 0; i--) {
            System.out.println(array[i]);
        }
        //array.fori
        System.out.println("-----------");
        //增强的for循环
        for (int item : array) {
            System.out.println(item);
        }
    }

    @Test
    public void test33() {
        int[] array1 = {12, 34, 34, 6};
        int[] array2 = new int[]{12, 34, 34, 6};
        for (int i = 0; i < array2.length; i++) {
            System.out.println(array2[i]);
        }
    }

    @Test
    public void test331() {
        int[] array = new int[4];
        array[0] = 23;
        array[1] = 3;
        array[2] = 4;
        array[3] = 24;
        int sum = 0;
        for (int i = 0; i < array.length; i++) {
            sum += array[i];
        }
        System.out.println("sum: " + sum);
    }

    @Test
    public void test332() {
        int[] array = new int[4];
        array[0] = 23;
        array[1] = 3;
        array[2] = 44;
        array[3] = 24;
        //假设第一个是最大的
        int max = array[0];
        for (int i = 0; i < array.length; i++) {
            if (array[i] > max) {
                max = array[i];
            }
        }
        System.out.println("max: " + max);
    }

    @Test
    public void test35() {
        int[] array = new int[4];
        array[0] = 23;
        array[1] = 3;
        array[2] = 44;
        array[3] = 24;
        //实参：实际传过去参数
        int max = getMax(array);
        System.out.println("max: " + max);
    }

    //方法签名  形参
    public int getMax(int[] array) {//方法体
        int max = array[0];
        for (int i = 0; i < array.length; i++) {
            if (array[i] > max) {
                int t = array[i];
                array[i] = max;
                max = t;
            }
        }
        return max;
    }

    @Test
    public void test335() {
        int[] array = {40, 17, 21, 1};
        sort(array);
        for (int i = 0; i < array.length; i++) {
            System.out.println(array[i]);
        }
    }

    public void sort(int[] array) {
        //i=1   j=3
        //i=2   j=2
        //i=3   j=1
        //i+j=array.length
        //j=array.length-i
        for (int i = 1; i <= array.length - 1; i++) {
            //i代表比较多少趟
            for (int j = 0; j < array.length - i; j++) {
                if (array[j] > array[j + 1]) {
                    int temp = array[j];
                    array[j] = array[j + 1];
                    array[j + 1] = temp;
                }
            }
        }
    }

    @Test
    public void test555() {
        int num1 = 3;
        int num2 = 5;
        int temp = num1;
        num1 = num2;
        num2 = temp;
        System.out.println("num1: " + num1);
        System.out.println("num2: " + num2);
    }

    @Test
    public void test554(){

            // 定义数组
            int[] scores = {0, 0, 1, 2, 3, 5, 4, 5, 2, 8, 7, 6, 9, 5, 4, 8, 3, 1, 0, 2, 4, 8, 7, 9, 5, 2, 1, 2, 3, 9};

            // 创建一个长度为10的数组来统计每个数字出现的次数
            int[] count = new int[10];

            // 遍历scores数组并统计每个数字出现的次数
            for (int score : scores) {
                count[score]++;
            }

            // 输出0-9的出现次数
            for (int i = 0; i < count.length; i++) {
                System.out.println(i + " 出现的次数：" + count[i]);

        }
    }


    @Test
    public void test556(){

        int[] scores = {0, 0, 1, 2, 3, 5, 4, 5, 2, 8, 7, 6, 9, 5, 4, 8, 3, 1, 0, 2, 4, 8, 7, 9, 5, 2, 1, 2, 3, 9};

        // 初始化计数器
        int oddCount = 0;   // 奇数个数
        int evenCount = 0;  // 偶数个数

        // 遍历数组
        for (int score : scores) {
            if (score % 2 == 0) {
                evenCount++;  // 偶数
            } else {
                oddCount++;   // 奇数
            }
        }

        // 输出结果
        System.out.println("奇数个数：" + oddCount);
        System.out.println("偶数个数：" + evenCount);


    }

//选择题BDBCACBCB



    @Test
    public void test557(){


        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入字符串： ");
        String str = scanner.next();  // 获取输入的字符串

        // 将字符串转换为字符数组
        char[] array = str.toCharArray();

        // 使用两个指针分别从头尾遍历字符数组
        int i = 0;
        int j = array.length - 1;

        boolean isPalindrome = true;  // 假设字符串是回文的

        while (i < j) {
            if (array[i] != array[j]) {
                isPalindrome = false;  // 如果发现不同字符，标记为非回文
                break;  // 退出循环
            }
            i++;  // 左指针向右移动
            j--;  // 右指针向左移动
        }

        // 输出判断结果
        if (isPalindrome) {
            System.out.println("该字符串是回文字符串");
        } else {
            System.out.println("该字符串不是回文字符串");
        }


    }


    @Test
    public void test78() {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入字符串：");
        String str = scanner.nextLine();  // 获取输入的字符串
        char[] array = str.toCharArray();  // 将字符串转换为字符数组

        // 初始化计数器
        int letterCount = 0;  // 英文字母个数
        int spaceCount = 0;   // 空格个数
        int digitCount = 0;   // 数字个数
        int otherCount = 0;   // 其他字符个数

        // 遍历字符数组
        for (char ch : array) {
            if (Character.isLetter(ch)) {
                letterCount++;  // 如果是字母
            } else if (Character.isDigit(ch)) {
                digitCount++;   // 如果是数字
            } else if (ch == ' ') {
                spaceCount++;   // 如果是空格
            } else {
                otherCount++;   // 其他字符
            }
        }

        // 输出统计结果
        System.out.println("英文字母个数：" + letterCount);
        System.out.println("空格个数：" + spaceCount);
        System.out.println("数字个数：" + digitCount);
        System.out.println("其他字符个数：" + otherCount);
    }


    //实体类：和数据库表一一对应




}
